function loserage(joueur, degat){ /*fonction qui gère la perte de rage du joueur en fonction du bouclier*/
    var weapons = new Array(); 
    weapons["joueur"] = "weapon";  
    weapons["joueur-dist"] = "weapon-dist";
    if((!v[joueur].waitLife || v["timerCount"] == v[joueur].countWaitLife) && v[weapons[joueur]].Shield.enable == false){
            if ( (v[joueur].rage -  degat) <= 0){					//On regarde si le nombre de rage est bien supérieur à 0 
                    degat = Math.abs(v[joueur].rage - degat);
                    loselife(joueur);
                    if(degat > 0){
                        loserage(joueur, degat); return;
                    }
            } 
            else {                                                //Sinon on soustrait sa rage par la quantité de dégats
                    v[joueur].rage -=  degat;
                    document.getElementById("text-ragebar-"+joueur).innerHTML = v[joueur].rage + "%"; //affichage des vie avec le %
                    document.getElementById("ragebar-"+joueur).style.width = v[joueur].rage + "%"; //affichage des vie avec le %
                    document.getElementById("audio-src-ogg").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/hurt.ogg";
                    document.getElementById("audio-src-mp3").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/hurt.mp3";
                    document.getElementById("audio-src-wav").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/hurt.wav";
                    document.getElementById("audio").load();
                    document.getElementById("audio").play();  
            }
            v[joueur].waitLife = true;
            v[joueur].countWaitLife = v["timerCount"]+25;
     }
     if((!v[joueur].waitLife || v["timerCount"] == v[joueur].countWaitLife) && v[weapons[joueur]].Shield.enable == true){ //Désactiver le shield après avoir recontré un obstable sans perdre de vie
             v[joueur].waitLife = true; 
             v[joueur].countWaitLife = v["timerCount"]+25;
             v[weapons[joueur]].Shield.enable = false;  
     }
              
}

function sendFog(){ /*fonction qui gère l'item du brouillard*/
    if(v["weapon"].Fog.number > 0){
        PUBNUB.publish({             // SEND A MESSAGE.
            channel : c["channel"].saut,
            message : {
                    "ident" : v["joueur"].ident,
                    "pseudo" : v["joueur"].pseudo,
                    "type" : "fog",
                    "vie" : v["joueur"].vies , 
                    "rage" : v["joueur"].rage, 
                    "furious" : v["joueur"].furious,
                    "isShield":v["weapon"].Shield.enable,
                    "nbShield":v["weapon"].Shield.number,
                    "nbBullet":v["weapon"].FireBullet.number,
                    "nbHeal":v["weapon"].Heal.number,
                    "nbSpecial":v["weapon"].Special.number
            }
        });
        v["joueur-dist"].fog = true;
        v["joueur-dist"].fogX = 880;
        v["weapon"].Fog.number--;
        document.getElementById("nb-steal-joueur").innerHTML = "x" + v["weapon"].Fog.number;
    }
}

function pushInvincible(){ /*fonction qui gère l'item étoile */
    PUBNUB.publish({             // SEND A MESSAGE.
            channel : c["channel"].saut,
            message : {
                    "ident" : v["joueur"].ident,
                    "pseudo" : v["joueur"].pseudo,
                    "type" : "invincible",
                    "vie" : v["joueur"].vies , 
                    "rage" : v["joueur"].rage, 
                    "furious" : v["joueur"].furious,
                    "isShield":v["weapon"].Shield.enable,
                    "nbShield":v["weapon"].Shield.number,
                    "nbBullet":v["weapon"].FireBullet.number,
                    "nbHeal":v["weapon"].Heal.number,
                    "nbSpecial":v["weapon"].Special.number
            }
        });
}

function loselife(joueur) /*fonction qui gère la perte de coeurs*/
{
    if(v[joueur].vies > 0){
        document.getElementById("vie-"+v[joueur].vies+"-"+joueur).style.opacity = "0.2";
        v[joueur].vies--;
    }
    
    if(v[joueur].vies == 0){
        if(joueur == "joueur" && !c["watch"]){
            clearInterval(v["timer"]);
            v["timer"] = "stop";
            document.getElementById("alert_message").innerHTML = "DEFEAT ! YOU'LL BE REDIRECTED TO LOBBY";
            PUBNUB.publish({             // SEND A MESSAGE.
                    channel : c["channel"].saut,
                    message : {
                            "ident" : v["joueur"].ident,
                            "pseudo" : v["joueur"].pseudo,
                            "type" : "loose"
                    }
                });
            $.get("/game/oppoWin", function(){
                console.log("loose envoyé");
            });
            $( "#dialog:ui-dialog" ).dialog( "destroy" );
            $("#dialog-message-loose").dialog({
                    resizable: false,
                    modal: true,
                    buttons: {
                            Ok: function() {
                                    $( this ).dialog( "close" );
                                    window.location.href = "/rooms";
                            }
                    }
            });
        }
    }
    gainrage(joueur, 100);
}

function setLife(joueur, life){
    for(var i = 3; i>0; i--){
         document.getElementById("vie-"+i+"-"+joueur).style.opacity = "1";
    }
    for(var j=3; j>life; j--){
         document.getElementById("vie-"+j+"-"+joueur).style.opacity = "0.2";
    }
}

function gainrage(joueur, gain){ /*fonction qui gère le gain de rage*/
	    if ( v[joueur].rage + gain >= 100){
		    v[joueur].rage = 100;
	    } 
        else{
            v[joueur].rage += gain;
        }
        document.getElementById("text-ragebar-"+joueur).innerHTML = v[joueur].rage + "%"; //affichage des vie avec le %
        document.getElementById("ragebar-"+joueur).style.width = v[joueur].rage + "%"; //affichage des vie avec le %
}

function ShotFireBullet(){ /*fonction qui gère l'objet Firebullet*/
	if(v["weapon"].FireBullet.number <= 0 ){
		v["weapon"].FireBullet.number = 0;
		document.getElementById("nb-firebullet-joueur").innerHTML = "x" + v["weapon"].FireBullet.number;
		document.getElementById("alert_message").innerHTML = "NEED RELOAD!";
	}
	else if(v["weapon"].FireBullet.enable == false)
        {
				//création
            v["weapon"].FireBullet.dom = new Image();
            v["weapon"].FireBullet.x = v["constantes"]["posX"];
            v["weapon"].FireBullet.y = v["joueur"].y;
            v["weapon"].FireBullet.enable = true;
            var nb = v["weapon"].FireBullet.number -1;
            document.getElementById("nb-firebullet-joueur").innerHTML = "x" + nb; //affichage du nombre de firebullet restant avec le x
            document.getElementById("alert_message").innerHTML = "FIREBULLET !";
            document.getElementById("audio-src-ogg").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/fire.ogg";
            document.getElementById("audio-src-mp3").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/fire.mp3";
            document.getElementById("audio-src-wav").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/fire.wav";
            document.getElementById("audio").load();
                document.getElementById("audio").play();
            gainfurious("joueur",7);
    }
    else
    {
        //déplacement
        v["weapon"].FireBullet.dom.style.zIndex = 2;
        v["weapon"].FireBullet.x+=25;
        v["weapon"].FireBullet.dom.style.left = v["weapon"].FireBullet.x+'px';
        if(v["weapon"].FireBullet.x > (880-16) && !c["watch"]){
            v["weapon"].FireBullet.enable = false;
            v["weapon"].FireBullet.number--;
            PUBNUB.publish({             // SEND A MESSAGE.
                channel : c["channel"].saut,
                message : {
                        "type" : "item",
                        "item" : "firebullet",
                        "y" : v["weapon"].FireBullet.y,
                        "vie" : v["joueur"].vies , 
                        "rage" : v["joueur"].rage, 
                        "furious" : v["joueur"].furious,
						"pseudo" : v["joueur"].pseudo,
                        "ident": v["joueur"].ident,
                        "isShield":v["weapon"].Shield.enable,
                        "nbShield":v["weapon"].Shield.number,
                        "nbBullet":v["weapon"].FireBullet.number,
                        "nbHeal":v["weapon"].Heal.number,
                        "nbSpecial":v["weapon"].Special.number,
                        "nbFog":v["weapon"].Fog.number
                }
            });
            receiveFireBullet("joueur-dist",v["weapon"].FireBullet.y);
        }
    }
	
}

function receiveFireBullet(joueur, y) /*fonction qui gère la firebullet pour le joueur adverse*/
{
    var W = new Array(); W["joueur"] = "weapon-recus"; W["joueur-dist"] = "weapon-recus-dist"; 
    var fb = new Object();
    fb.x = 880-16;
    fb.y = y;
    fb.type = "firebullet";
    v[W[joueur]].push(fb);
}

function GetShield(joueur){ /*fonction qui gère l'objet bouclier*/
    var weapon, src;
    if(joueur == "joueur"){weapon = "weapon"; src = "nb-teleport-joueur";}
    else{weapon = "weapon-dist"; src = "nb-teleport-joueur-dist";}
    if(v[weapon].Shield.enable == false){
	    if(v[weapon].Shield.number < 1){
		    v[weapon].Shield.number = 0;
            v[weapon].Shield.enable = false;
		    document.getElementById("alert_message").innerHTML = "NEED SHIELD!";
	    }
	    else{
            v[weapon].Shield.number--;
            v[weapon].Shield.enable = true;
            document.getElementById(src).innerHTML = "x" + v[weapon].Shield.number;
            document.getElementById("alert_message").innerHTML = "SHIELD !";
            document.getElementById("audio-src-ogg").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/shield.ogg";
            document.getElementById("audio-src-mp3").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/shield.mp3";
            document.getElementById("audio-src-wav").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/shield.wav";
            document.getElementById("audio").load();
                document.getElementById("audio").play();
            gainfurious(joueur,5);
	    }
    }
}

function gainfurious(joueur, gain){ /*fonction qui gère le gain du furious*/
    if(v[joueur].furious + gain >= 100){
        v[joueur].furious = 100;
        document.getElementById("alert_message").innerHTML = "FURY COMPLETE !";
    }
    else{
        v[joueur].furious += gain;
    }
    document.getElementById("text-furiousbar-"+joueur).innerHTML = v[joueur].furious + "%";
    document.getElementById("furiousbar-"+joueur).style.width = v[joueur].furious + "%";

}

function losefurious(joueur, fury){ /*fonction qui gère la perte du furious*/
    if(v[joueur].furious - fury <= 0){
        v[joueur].furious = 0;
    }
    else{
        v[joueur].furious -= fury;
        }
    document.getElementById("text-furiousbar-"+joueur).innerHTML = v[joueur].furious + "%";
    document.getElementById("furiousbar-"+joueur).style.width = v[joueur].furious + "%";
}

function GetHealth(){ /*Fonction qui gère l'objet Heal*/
    if(v["weapon"].Heal.number > 0){
        v["weapon"].Heal.number--;
        document.getElementById("nb-heal-joueur").innerHTML = "x" + v["weapon"].Heal.number;
        document.getElementById("alert_message").innerHTML = "HEAL !";
        document.getElementById("audio-src-ogg").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/heal.ogg";
        document.getElementById("audio-src-mp3").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/heal.mp3";
        document.getElementById("audio-src-wav").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/heal.wav";
        document.getElementById("audio").load();
        document.getElementById("audio").play();
        gainrage("joueur",50);
        if(!c["watch"]){
            PUBNUB.publish({             // SEND A MESSAGE.
                channel : c["channel"].saut,
                message : {
                        "ident" : v["joueur"].ident,
                        "pseudo" : v["joueur"].pseudo,
                        "vie": v["joueur"].vies,
                        "rage":v["joueur"].rage,
                        "furious":v["joueur"].furious,
                        "isShield":v["weapon"].Shield.enable,
                        "nbShield":v["weapon"].Shield.number,
                        "nbBullet":v["weapon"].FireBullet.number,
                        "nbHeal":v["weapon"].Heal.number,
                        "nbSpecial":v["weapon"].Special.number,
                        "type" : "GetHealth",
                        "nbFog":v["weapon"].Fog.number
                        }
            });
        }
    } else {
        document.getElementById("alert_message").innerHTML = "NEED HEAL !";
    }
}

function GetXSpecial(joueur){ /*Fonction qui gère le spécial lorsque le furious atteint 100%*/
    if(v[joueur].persoId == 1){
        document.getElementById("audio-src-ogg").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/pikachu.ogg";
        document.getElementById("audio-src-mp3").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/pikachu.mp3";
        document.getElementById("audio-src-wav").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/pikachu.wav";
    }
    else{
        document.getElementById("audio-src-ogg").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/Dominating.ogg";
        document.getElementById("audio-src-mp3").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/Dominating.mp3";
        document.getElementById("audio-src-wav").src = "http://rbeuque74eu.blob.core.windows.net/files/sounds/Dominating.wav";
    }
    document.getElementById("audio").load();
    document.getElementById("audio").play();
    losefurious(joueur, 100);
    document.getElementById("alert_message").innerHTML = "NAPALM !!!";
    if(joueur == "joueur" && !c["watch"]){
        PUBNUB.publish({             // SEND A MESSAGE.
            channel : c["channel"].saut,
            message : {
                    "ident" : v["joueur"].ident,
                    "pseudo" : v["joueur"].pseudo,
                    "vie": v["joueur"].vies,
                    "rage":v["joueur"].rage,
                    "furious":v["joueur"].furious,
                    "isShield":v["weapon"].Shield.enable,
                    "nbShield":v["weapon"].Shield.number,
                    "nbBullet":v["weapon"].FireBullet.number,
                    "nbHeal":v["weapon"].Heal.number,
                    "nbSpecial":v["weapon"].Special.number,
                    "type" : "napalm",
                        "nbFog":v["weapon"].Fog.number
                    }
        });
    }
}